	org 7c00h 		; 告诉编译器程序加载到7C00H处
	mov ax,cs 		; 初始化数据段与附加段寄存器与代码段的相同
	mov ds,ax
	mov es,ax
	call CLS ; add clear the screen
	call DispStr 	; 调用显示字符串的例程
	call Read 		; 调用读入扇区的例程
	jmp 7e00h 		; 跳转到所读入的装载的MY-OS代码处

; clear the screen
CLS:
    mov	ah, 6			; 功能号
    mov	al, 0			; 滚动的文本行数（0=整个窗口）
    mov bh,0fh		; 设置插入空行的字符颜色为黑底亮白字
    mov ch, 0			; CH=行号、CL=列号
    mov cl, 0			; 窗口左上角的行列号都为0
    mov dh, 24		; 窗口右下角的行号，文本屏幕25行，行号=0~24
    mov dl, 79		; 窗口右下角的列号，文本屏幕80列，列号=0~79
	int 10h			; 显示中断
	ret

DispStr: ; 显示字符串例程
	mov ax,BootMsg ; 中转串地址
	mov bp,ax 		; ES:BP=串地址
	mov cx,16 		; CX=串长
	mov ax,1301h 	; AH=13为BIOS中断的功能号、AL=1表示光标放到串尾
	mov bx,0ch 	; BH=页号、BL=颜色（黑底红字）
	mov dx,0 		; 从第0行的第0列开始显示串
	int 10h 		; 调用10H号中断
	ret 			; 从例程返回
Read: ; 读入软盘第2个扇区到7E00H处
	xor ax,ax 		; 相当于mov ax,0
	mov es,ax 		; ES=0
	mov bx,7e00H ; ES:BX=读入数据到内存中的存储地址
	mov ah,2 		; 功能号
	mov al,1 		; 要读入的扇区数
	mov dl,0 		; 软盘驱动器号（对硬盘和U盘，此处的值应改为80H）
	mov dh,0 		; 磁头号
	mov ch,0 		; 柱面号
	mov cl,2 		; 起始扇区号（编号从1开始）
	int 13H 		; 调用13H号中断
	ret 			; 从例程返回
BootMsg: ; 显示字符串
	db "Hello, OS world!"
	times 510-($-$$) db 0 ; 用0填充剩余部分
					; （$=当前地址、$$=当前节地址）
	db 55h,0aah 	; 启动扇区的结束标志
